<?php

class Campo{

	var $Nombre;
	var $NombreTabla;
	var $AliasTabla;
	var $Alias;
	var $ClaveExterna;
	var $esClavePrimaria;
	var $esReadOnly;
	var $Tabla;
	var $ID;
	var $Valor;
	var $esVisible;
	var $NombreSelector;
	var $esBase;
	var $ocultoListado;
	var $ocultoDetalle;
	var $encriptado;
	var $esGrupo;
	var $noIngresar;
	var $esFuncion;
	var $esOrden;
	var $Tipo;
	var $Longitud;
	
	
	function Campo($tabla=0, $nombre = ''){
		$this->esVisible=1;
		$this->ClaveExterna = 0;
		$this->Nombre = $nombre;
		if($this->Tabla != NULL){
			$campos = $this->Tabla->obtarrCampos();			
		}
		else{
			$campos = $tabla->obtarrCampos();	
		}
		$this->esClavePrimaria = $campos[$this->Nombre]['primary_key'];
		$this->estTabla($tabla);
		$this->Alias = '';
		$this->NombreSelector = "";
		$this->NombreTabla = $tabla->obttxtNombreTabla();
		$this->AliasTabla = $tabla->obttxtAlias();
		$this->ocultoDetalle = 0;
		$this->ocultoListado = 0;
		$this->encriptado = 0;
		$this->esGrupo = 0;
		$this->esBase = 0;
		$this->esReadOnly = 0;
		$this->noIngresar = 0;
		$this->esFuncion = 0;
	}

	//Funciones para establecer los atributos de la clase
	function estNombre($txtNombre){
		//$campos = $this->Tabla->obtarrCampos();
		//if(isset($campos[$txtNombre])){
			$this->Nombre = $txtNombre;
		//}
		//else{
			//var_dump($campos);
			//die("No se encuentra el campo ".$txtNombre." en la tabla "
			//.$this->Tabla->obttxtNombreTabla().".");
		//}
		
	}
	function estLongitud($longitud){
		$this->Longitud = $longitud;
	}
	function estCondicion($txtCondicion){
		$this->Condicion = $txtCondicion;
	}
	function estClaveExterna(&$Clave){
		$this->ClaveExterna = &$Clave;
	}
	function estEsReadOnly($readonly){
		$this->esReadOnly = $readonly;
	}
	function estEsDescriptiva($describe){
		$this->esDescriptiva = $describe;
	}
	function estTipo($nombreTipo){
		$this->Tipo = $nombreTipo;
	}
	function estTabla($objTabla){
		if($objTabla != 0){
			$this->Tabla = &$objTabla;
		}
	}
	function estID($numID){
		$this->ID = $numID;
	}
	function estIndice($numIndice){
		$this->ID = $numIndice;
	}
	function estValor($valor){
		if($this->encriptado == 0){
			$this->Tabla->estPropiedad($this->Nombre, $valor);
		}
		else{
			$this->Tabla->estPropiedad($this->Nombre, md5($valor));
		}
	}
	function estAlias($alias){
		$this->Alias = $alias;
	}
	function estEsVisible($visible){
		$this->esVisible = $visible;
	}
	function estNombreSelector($nombre){
		$this->NombreSelector = $nombre;
	}
	function estEsBase($base){
		$this->esBase = $base;
	}
	function estNombreTabla($nombreTabla){
		$this->NombreTabla = $nombreTabla;
	}
	function estAliasTabla($alias){
		$this->AliasTabla = $alias;
	}
	function estOcultoDetalle($oculto){
		$this->ocultoDetalle = $oculto;
	}
	function estOcultoListado($oculto){
		$this->ocultoListado = $oculto;
	}
	function estEncriptado($encriptado){
		$this->encriptado = $encriptado;
	}
	function estEsGrupo($grupo){
		$this->esGrupo = $grupo;
	}
	function estNoIngresar($no){
		$this->noIngresar = $no;
	}
	function estEsClavePrimaria($clave){
		$this->esClavePrimaria = $clave;
	}	
	function estEsOrden($orden){
		$this->esOrden = $orden;
	}
	//Funciones para obtener los atributos de la clase
	function obtNombre(){
		return $this->Nombre;
	}
	function obtEsClavePrimaria(){
		return $this->esClavePrimaria;
	}
	function &obtClaveExterna(){
		return $this->ClaveExterna;
	}
	function obtEsReadOnly(){
		/*$campos = $this->Tabla->obtarrCampos();
		if($campos[$this->Nombre]['auto_increment'] == 0){
			return $this->esReadOnly;
		}
		else{
			return 1;
		}*/
		if($this->esReadOnly == 1){
			return 1;
		}
		else{ 
			$campos = $this->Tabla->obtarrCampos();
			if($campos[$this->Nombre]['auto_increment'] == 0){
				return $this->esReadOnly;
			}
			else{
				return 1;
			}
		}
	}
	function obtEsDescriptiva(){
		return $this->esDescriptiva;
	}
	function obtTabla(){
		return $this->Tabla;
	}
	function obtValor(){
		return $this->Tabla->obtPropiedad($this->Nombre, "valor");
	}
	function obtAlias(){
		return $this->Alias;
	}
	function obtLongitud(){
		if(!isset($this->Longitud)){
			return $this->Tabla->obtPropiedad($this->Nombre, "length");
		}else{
			return $this->Longitud;
		}
	}
	function obtTipo(){
		if(!isset($this->Tipo)){
			return $this->Tabla->obtPropiedad($this->Nombre, "tipo");
		}
		else{
			return $this->Tipo;
		}
	}
	function obtEsVisible(){
		return $this->esVisible;
	}
	function obtNombreSelector(){
		return $this->NombreSelector;
	}
	function obtEsBase(){
		return $this->esBase;
	}
	function obtNombreTabla(){
		return $this->NombreTabla;
	}
	function obtAliasTabla(){
		return $this->AliasTabla;
	}
	function obtEsAutonumerico(){
		$campos = $this->Tabla->obtarrCampos();
		return $campos[$this->Nombre]['auto_increment'];
	}
	function obtExpresion(){
		if(strpos($this->Nombre, " ") > 0){
			$comilla="'";
		}
		else{
			$comilla = "";
		}
		$expresion = $comilla.$this->AliasTabla;
		$expresion .= ".";
		$expresion .= $this->Nombre . $comilla;
		if($this->Alias != ""){
			$expresion .= " as '".$this->Alias ."'";
		}
		return $expresion;
	}
	function obtOcultoDetalle(){
		return $this->ocultoDetalle;
	}
	function obtOcultoListado(){
		return $this->ocultoListado;
	}
	function obtEncriptado(){
		return $this->encriptado;
	}
	function obtEsGrupo(){
		return $this->esGrupo;
	}
	function obtNoIngresar(){
		return $this->noIngresar;
	}
	function obtEsFuncion(){
		return $this->esFuncion;
	}
	function obtEsOrden(){
		return $this->esOrden;
	}
	function obtEsAnulable(){
		$campos = $this->Tabla->obtarrCampos();
		return $campos[$this->Nombre]['anulable'];
	}
}
?>